package juanca.mole;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import ClasesExtras.ManejadorCampos;
import ClasesExtras.handlerAlertMessage;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class Trazabilidad extends Activity {

	private int fAno;
	private int fMes;
	private int fDia;
	private Date fechaElabora;
	private Date fechaVenc;
	private String maquina;
	private String obs;
	private int tempFinal;

	public static final int DATE_DIALOG_ID1 = 0;
	public static final int DATE_DIALOG_ID2 = 1;
	private EditText etTempFinalProceso;
	private EditText etObsTraza;
	private ManejadorCampos manejador;
	private handlerAlertMessage manejadorMensajes;
	private Activity activity;

	/**
	 * @return the tempFinal
	 */
	public int getTempFinal() {
		return tempFinal;
	}

	/**
	 * @param tempFinal
	 *            the tempFinal to set
	 */
	public void setTempFinal(int tempFinal) {
		this.tempFinal = tempFinal;
	}

	/**
	 * @return the obs
	 */
	public String getObs() {
		return obs;
	}

	/**
	 * @param obs
	 *            the obs to set
	 */
	public void setObs(String obs) {
		this.obs = obs;
	}

	/**
	 * @return the maquina
	 */
	public String getMaquina() {
		return maquina;
	}

	/**
	 * @param maquina
	 *            the maquina to set
	 */
	public void setMaquina(String maquina) {
		this.maquina = maquina;
	}

	/**
	 * @return the fechaVenc
	 */
	public Date getFechaVenc() {
		return fechaVenc;
	}

	/**
	 * @param fechaVenc
	 *            the fechaVenc to set
	 */
	public void setFechaVenc(Date fechaVenc) {
		this.fechaVenc = fechaVenc;
	}

	/**
	 * @return the fechaElabora
	 */
	public Date getFechaElabora() {
		return fechaElabora;
	}

	/**
	 * @param fechaElabora
	 *            the fechaElabora to set
	 */
	public void setFechaElabora(Date fechaElabora) {
		this.fechaElabora = fechaElabora;
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_trazabilidad);

		etTempFinalProceso = (EditText) findViewById(R.id.etTempFinalProceso);
		etObsTraza = (EditText) findViewById(R.id.etObsTraza);
		manejadorMensajes = new handlerAlertMessage();
		manejador = new ManejadorCampos();
		activity = this;
		this.spMaquinas();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.layout_trazabilidad, menu);
		return true;
	}

	@SuppressWarnings("deprecation")
	public void FechaElabora(View v) {
		final Calendar c = Calendar.getInstance();
		fAno = c.get(Calendar.YEAR);
		fMes = c.get(Calendar.MONTH);
		fDia = c.get(Calendar.DAY_OF_MONTH);
		showDialog(DATE_DIALOG_ID1);
	}

	private DatePickerDialog.OnDateSetListener showdate1 = new DatePickerDialog.OnDateSetListener() {

		@SuppressLint("SimpleDateFormat")
		@Override
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			fAno = year;
			fMes = monthOfYear;
			fDia = dayOfMonth;

			Context context = getApplicationContext();
			CharSequence text = new StringBuilder().append(fDia).append("-")
					.append(fMes + 1).append("-").append(fAno);
			int duration = Toast.LENGTH_SHORT;

			Toast toast = Toast.makeText(context, text, duration);
			toast.show();

			SimpleDateFormat formatoFecha = new SimpleDateFormat("dd-MM-yyyy");
			String date = (fDia + "-" + fMes + "-" + fAno + "-").toString();

			try {
				setFechaElabora(formatoFecha.parse(date));
				CharSequence texto = "Formtato date";

				toast = Toast.makeText(context, texto, duration);
				toast.show();
			} catch (java.text.ParseException e) {

				CharSequence texto = "Error en la fecha";
				toast = Toast.makeText(context, texto, duration);
				toast.show();

			}

		}
	};

	@SuppressWarnings("deprecation")
	public void FechaVenc(View v) {
		final Calendar c = Calendar.getInstance();
		fAno = c.get(Calendar.YEAR);
		fMes = c.get(Calendar.MONTH);
		fDia = c.get(Calendar.DAY_OF_MONTH);
		showDialog(DATE_DIALOG_ID1);
	}

	private DatePickerDialog.OnDateSetListener showdate2 = new DatePickerDialog.OnDateSetListener() {

		@SuppressLint("SimpleDateFormat")
		@Override
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			fAno = year;
			fMes = monthOfYear;
			fDia = dayOfMonth;

			Context context = getApplicationContext();
			CharSequence text = new StringBuilder().append(fDia).append("-")
					.append(fMes + 1).append("-").append(fAno);
			int duration = Toast.LENGTH_SHORT;

			Toast toast = Toast.makeText(context, text, duration);
			toast.show();

			SimpleDateFormat formatoFecha = new SimpleDateFormat("dd-MM-yyyy");
			String date = (fDia + "-" + fMes + "-" + fAno + "-").toString();

			try {
				setFechaElabora(formatoFecha.parse(date));
				CharSequence texto = "Formtato date";

				toast = Toast.makeText(context, texto, duration);
				toast.show();
			} catch (java.text.ParseException e) {

				CharSequence texto = "Error en la fecha";
				toast = Toast.makeText(context, texto, duration);
				toast.show();

			}

		}
	};

	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case DATE_DIALOG_ID1:
			return new DatePickerDialog(this, showdate1, fAno, fMes, fDia);

		case DATE_DIALOG_ID2:
			return new DatePickerDialog(this, showdate2, fAno, fMes, fDia);
		}

		return null;
	}

	// spinner que despliega las maquinas
	public void spMaquinas() {

		Spinner maquinas = (Spinner) findViewById(R.id.spiMaqUsada);
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
				this, R.array.maquinas, android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		maquinas.setAdapter(adapter);
		this.setMaquina(maquinas.getSelectedItem().toString());
	}

	// metodo que valida que la temperatura final no esté vacía
	public void finTraza(View v) {
		int tempFin = manejador.validarPh(etTempFinalProceso);

		if (tempFin != 0) {
			switch (tempFin) {
			case 17:
				manejadorMensajes.alertMessageOneButton(activity,
						R.string.tituloAlerta, R.string.msjTempFin,
						R.string.btnAceptar);
				break;
			}
		} else {

			validar();

		}
	}

	public void validar() {
		if (this.getFechaElabora() != null) {
			if (this.getFechaVenc() != null) {

				this.setObs(this.etObsTraza.getText().toString());
				this.setTempFinal(Integer.parseInt(this.etTempFinalProceso
						.getText().toString()));

				Context context = getApplicationContext();
				CharSequence text = "¡Muy bien!";
				int duration = Toast.LENGTH_SHORT;

				Toast toast = Toast.makeText(context, text, duration);
				toast.show();

				Intent intent = new Intent();
				intent.setClass(this, Etapas.class);
				startActivity(intent);
			} else {
				manejadorMensajes.alertMessageOneButton(activity,
						R.string.tituloAlerta, R.string.msjFechaVenc,
						R.string.btnAceptar);
			}
		} else {
			manejadorMensajes.alertMessageOneButton(activity,
					R.string.tituloAlerta, R.string.msjFechaElabora,
					R.string.btnAceptar);
		}
	}

	// ir a chequeo fisico-quimico
	public void goCheqFQ_Traza(View view) {
		Intent intent = new Intent();
		intent.setClass(this, CheqFQ_Traza.class);
		startActivity(intent);
	}

	// ir a producto empacado
	public void goProductoEmpacado(View view) {
		Intent intent = new Intent();
		intent.setClass(this, ProductoEmpacado.class);
		startActivity(intent);
	}

}
